package cn.net.Thread;
/*需求:设计多线程编程模型,4个窗口共计售票100张*/
/*本类通过实现Runnable接口的方式实现多线程售票案例*/
public class TicketsRunnable2 {
    public static void main(String[] args) {
        //5.创建目标业务对象  !!!!!!!!!!!!!!
        TicketThread2 t =new TicketThread2();
        //创建线程对象  //6.使用Thread类中的含参构造,将目标对象与线程对象做绑定
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);
        Thread t3 = new Thread(t);
        Thread t4 = new Thread(t);

        //7.以多线程的方式启动线程
        t1.start();
        t2.start();
        t3.start();
        t4.start();

    }
}
class TicketThread2 implements Runnable{ //1.实现Runnable接口的同时，并重写run方法

   //4.创建成员变量,用来保存票数,注意必须是静态的
   static int tickets = 100;

    @Override
    public void run() {
         //2.采用while循环来卖票
        while(true){
            try {
                Thread.sleep(10);//3.休眠检测隐患
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            //4.在循环里输出。获取当前正在卖票的线程名称,以及卖票
            System.out.println(Thread.currentThread().getName()+"="+ tickets--);
            //5。结束条件，死循环出口
            if(tickets<=0) break;
        }
    }
}